<?php

class TexChange{
	
	var $meses = array('01'=>'Janeiro', '02'=>'Fevereiro', '03'=>'Março', '04'=>'Abril', '05'=>'Maio', '06'=>'Junho',
			'07'=>'Julho', '08'=>'Agosto', '09'=>'Setembro', '10'=>'Outubro', '11'=>'Novembro', '12'=>'Dezembro');
	
	public function valorPorExtenso($valor = 0) {
		$singular = array(__("centavo"), __("real"), __("mil"), __("milhão"), __("bilhão"), __("trilhão"), __("quatrilhão"));
		$plural = array(__("centavos"), __("reais"), __("mil"), __("milhões"), __("bilhões"), __("trilhões"),__("quatrilhões"));
	
		$c = array("", "cem", "duzentos", "trezentos", "quatrocentos","quinhentos", "seiscentos", "setecentos", "oitocentos", "novecentos");
		$d = array("", "dez", "vinte", "trinta", "quarenta", "cinquenta","sessenta", "setenta", "oitenta", "noventa");
		$d10 = array("dez", "onze", "doze", "treze", "quatorze", "quinze","dezesseis", "dezesete", "dezoito", "dezenove");
		$u = array("", "um", "dois", "três", "quatro", "cinco", "seis","sete", "oito", "nove");
	
		$z=0;
	
		$valor = number_format($valor, 2, ".", ".");
		$inteiro = explode(".", $valor);
		for($i=0;$i<count($inteiro);$i++)
		for($ii=strlen($inteiro[$i]);$ii<3;$ii++)
			$inteiro[$i] = "0".$inteiro[$i];
	
			// $fim identifica onde que deve se dar junção de centenas por "e" ou por "," ;)
			$fim = count($inteiro) - ($inteiro[count($inteiro)-1] > 0 ? 1 : 2);
			for ($i=0;$i<count($inteiro);$i++) {
			$valor = $inteiro[$i];
			$rc = (($valor > 100) && ($valor < 200)) ? "cento" : $c[$valor[0]];
			$rd = ($valor[1] < 2) ? "" : $d[$valor[1]];
			$ru = ($valor > 0) ? (($valor[1] == 1) ? $d10[$valor[2]] : $u[$valor[2]]) : "";
	
			$r = $rc.(($rc && ($rd || $ru)) ? " e " : "").$rd.(($rd && $ru) ? " e " : "").$ru;
			$t = count($inteiro)-1-$i;
			$r .= $r ? " ".($valor > 1 ? $plural[$t] : $singular[$t]) : "";
			if ($valor == "000")$z++; elseif ($z > 0) $z--;
			if (($t==1) && ($z>0) && ($inteiro[0] > 0)) $r .= (($z>1) ? " de " : "").$plural[$t];
			if ($r) $rt = $r . ((($i > 0) && ($i <= $fim) && ($inteiro[0] > 0) && ($z < 1)) ? ( ($i < $fim) ? ", " : " e ") : " ");
			}
			return($rt ? $rt : "zero");
	}
	
	public function cleantext($string){
		$string = str_replace(array("ä", "Ä"), "a", $string); // Additional Swedish filter
		$string = str_replace(array("å", "Å"), "a", $string); // Additional Swedish filter
		$string = str_replace(array("ö", "Ö"), "o", $string); // Additional Swedish filter
		$string = str_replace('°', "DEGREEGWD", $string);
		$string = preg_replace("/[^A-Za-z0-9À-ÿ\s\-\,\.\;]/i", "", $string); // Remove special characters
		$string = preg_replace("/\s\s+/", " ", $string); // Replace multiple spaces with one space
		$string = trim($string); // Remove trailing spaces
		$string = str_replace('DEGREEGWD', "\\degree", $string);
		return $string;
	} 
	
	public function changeTexPagamento($file, $nome, $valor, $evento, $local, $data_inicio, $data_fim, $tesoureiro, $hash = null){
		$string = file_get_contents($file);
		$string = preg_replace('/NOME_USUARIO/', $this->cleantext($nome), $string);
		$string = preg_replace('/VALOR_NUMERO/', number_format($valor, 2, ',', '.'), $string);
		$string = preg_replace('/DIA_DATA/', date('d'), $string);
		$string = preg_replace('/MES_DATA/', $this->meses[date('m')], $string);
		$string = preg_replace('/ANO_DATA/', date('Y'), $string);
		$string = preg_replace('/VALOR_EXTENSO/', ucfirst($this->valorPorExtenso($valor)), $string);
		$string = preg_replace('/EVENTO_ATUAL/', $evento, $string);
		$string = preg_replace('/LOCAL/', $local, $string);
		$string = preg_replace('/DATA_INICIO/', $data_inicio, $string);
		$string = preg_replace('/DATA_FIM/', $data_fim, $string);
		$string = preg_replace('/NOME_TESOUREIRO/', $tesoureiro, $string);
		$file = substr($file, 0, -4);
		if(!is_null($hash))
			$file .= $hash.'-alterado.tex';
		else $file .= '-alterado.tex';
		file_put_contents($file, $string);
		return $file;
	} 
	
	public function changeTexTrabalho($file, $trabalho, $evento,  $local, $data_inicio, $data_fim, $hash = null){
		$string = file_get_contents($file);
		$autores_formatados = str_replace(';', addslashes('\\\\'), $this->cleantext($trabalho['Trabalho']['autores']));
		$string = preg_replace('/AUTORES_DO_TRABALHO/', $autores_formatados.addslashes('\\\\'), $string);
		$string = preg_replace('/NOME_DO_TRABALHO/', $this->cleantext($trabalho['Trabalho']['titulo']), $string);
		$string = preg_replace('/CATEGORIA_DO_TRABALHO/', $trabalho['Avaliacao']['CategoriaAprovado'], $string);
		$string = preg_replace('/SESSAO_DO_TRABALHO/', $trabalho['Sessao']['nome'], $string);
		$string = preg_replace('/EVENTO_ATUAL/', $evento, $string);
		$string = preg_replace('/LOCAL/', $local, $string);
		$string = preg_replace('/DATA_INICIO/', $data_inicio, $string);
		$string = preg_replace('/DATA_FIM/', $data_fim, $string);
		$file = substr($file, 0, -4);
		if(!is_null($hash))
			$file .= $hash.'-alterado.tex';
		else $file .= '-alterado.tex';
		file_put_contents($file, $string);
		return $file;
	}
	
	public function changeTexApTrabalho($file, $trabalho, $nomes, $evento, $local, $data_inicio, $data_fim, $categoria, $hash = null){
		$string = file_get_contents($file);
		$autores_formatados = str_replace(';', ', ', $this->cleantext($nomes));
		$string = preg_replace('/AUTORES/', $autores_formatados, $string);
		$string = preg_replace('/NOME_DO_TRABALHO/', $this->cleantext($trabalho['Trabalho']['titulo']), $string);
		$string = preg_replace('/CATEGORIA_DO_TRABALHO/', $categoria, $string);
		$string = preg_replace('/EVENTO_ATUAL/', $evento, $string);
		$string = preg_replace('/LOCAL/', $local, $string);
		$string = preg_replace('/DATA_INICIO/', $data_inicio, $string);
		$string = preg_replace('/DATA_FIM/', $data_fim, $string);
		$file = substr($file, 0, -4);
		if(!is_null($hash))
			$file .= $hash.'-alterado.tex';
		else $file .= '-alterado.tex';
		file_put_contents($file, $string);
		return $file;
	}
	
	public function changeTexCoordenacao($file, $nome, $categoria, $evento, $local, $data_inicio, $data_fim, $hash = null){
		$string = file_get_contents($file);
		$string = preg_replace('/NOME_DO_COORDENADOR/', $this->cleantext($nome), $string);
		$string = preg_replace('/CATEGORIA_DO_TRABALHO/', $categoria, $string);
		$string = preg_replace('/EVENTO_ATUAL/', $evento, $string);
		$string = preg_replace('/LOCAL/', $local, $string);
		$string = preg_replace('/DATA_INICIO/', $data_inicio, $string);
		$string = preg_replace('/DATA_FIM/', $data_fim, $string);
		$file = substr($file, 0, -4);
		if(!is_null($hash))
			$file .= $hash.'-alterado.tex';
		else $file .= '-alterado.tex';
		file_put_contents($file, $string);
		return $file;
	}
	
	public function changeTexParticipacao($file, $nome, $cursos, $evento, $local, $data_inicio, $data_fim, $hash = null){
		$string = file_get_contents($file);
		$string = preg_replace('/NOME_USUARIO/', $this->cleantext($nome), $string);
		$string = preg_replace('/CURSOS_PRESENTES/', $cursos, $string);
		$string = preg_replace('/DIA_DATA/', date('d'), $string);
		$string = preg_replace('/MES_DATA/', $this->meses[date('m')], $string);
		$string = preg_replace('/ANO_DATA/', date('Y'), $string);
		$string = preg_replace('/EVENTO_ATUAL/', $evento, $string);
		$string = preg_replace('/LOCAL/', $local, $string);
		$string = preg_replace('/DATA_INICIO/', $data_inicio, $string);
		$string = preg_replace('/DATA_FIM/', $data_fim, $string);
		$file = substr($file, 0, -4);
		if(!is_null($hash))
			$file .= $hash.'-alterado.tex';
		else $file .= '-alterado.tex';
		file_put_contents($file, $string);
		return $file;
	}
	
	
	
}